package service;

import dao.StudentDao;
import dao.StudentDaoImpl;
import pojo.PageData;
import pojo.Student;

import java.sql.SQLException;
import java.util.List;

public class StudentServiceImpl implements StudentService{

    private StudentDao studentDao=new StudentDaoImpl();

    @Override
    public void addStudent(Student student) {
        //要不要检查数据?
        //我们对数据是有要求的,比如有的数据不能为空, 有的数据长度不能少于多少,有的数据格式必须满足什么情况
        if(student.isNull()){
            System.err.println("数据有不符合我们要求的地方,我们需要告诉前端");
            return;

        }
        //执行数据库操作
        try {
            studentDao.addStudent(student);
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    @Override
    public PageData<Student> findStudentsByPage(int pageNum, int pageSize) {
        //我们现在只知道每页显示多少,当前是第几页,但是数据库中需要的是偏移量,所以我们需要先计算偏移量
        //如果用户故意传很大的数字过来也不行
        if(pageSize>15){
            pageSize=15;

        }
        int pyl=(pageNum-1)*pageSize;
        //先获取所有学生
        try {
            List<Student> studentList = studentDao.findStudentsByPage(pyl,pageSize);
            System.err.println("查询到的学生是："+studentList);
            long count = studentDao.getCount();
            //因为我们一个方法无法返回多个不同的数据,所以封装到一个类中,然后进行返回
            PageData<Student>pageData=new PageData<>();
            pageData.setDataList(studentList);
            pageData.setTotalCount(count);
            pageData.setPageNum(pageNum);
            pageData.setPageSize(pageSize);
            return pageData;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public void deleteStudentById(long id) {
        if(id<1){
            //没有这行数据
            System.err.println("没有 id="+id);
            return;

        }
        try {
            studentDao.deleteById(id);//删除数据
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}
